package com.cmfi.utils;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.cmfi.domain.userRoleAuthEntity.LoginUser;

/**
 * spring redis 工具类
 **/
@Component
public class Cache
{
	@Autowired
	public static Map<String, Object> userCache = new ConcurrentHashMap<String, Object>();

	/**
	 * 缓存基本的对象，Integer、String、实体类等
	 *
	 * @param key   缓存的键值
	 * @param value 缓存的值
	 */
    public <T> void setCacheObject(final String key, final T value)
    {
    	userCache.put(key, value);
    }


    /**
     * 判断 key是否存在
     *
     * @param key 键
     * @return true 存在 false不存在
     */
    public Boolean hasKey(String key)
    {
        return userCache.containsKey(key);
    }

    /**
     * 获得缓存的基本对象。
     *
     * @param key 缓存键值
     * @return 缓存键值对应的数据
     */
    public Object getCacheObject(final String key)
    {
        return userCache.get(key);
    }
    
    /**
     * 获取当前已登录用户
     *
     * @param key 缓存键值
     * @return 缓存键值对应的数据
     * @throws Exception 
     */
	public LoginUser getNowUser() throws Exception {
		if (userCache.size() != 1) {
			throw new Exception();
		}
		for (Object obj : userCache.values()) {
			return (LoginUser)obj;
		}
		return null;
	}

    /**
     * 删除单个对象
     *
     * @param key
     */
    public void deleteObject(final String key)
    {
    	userCache.remove(key);
    }

}

